﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Web;
//using System.Web.Mvc;
//using Attributes;
//using SysHelper;


//namespace DS.System
//{

//    public class Account : AuthorizeAttribute
//    {
//        #region MyRegion
//        public override void OnAuthorization(AuthorizationContext filterContext)
//        {
//            //获取区域名
//            string strArea = filterContext.RouteData.DataTokens.Keys.Contains("area") ? filterContext.RouteData.DataTokens["area"].ToString().ToLower() : "";

//            //要验证的区域名 集合
//            List<string> AreaNames = new List<string>()
//            {
//                "client","service"
//            };

//            if (!string.IsNullOrEmpty(strArea) && AreaNames.Contains(strArea))
//            {
//                //是否要跳过 验证登陆 
//                if (!DoesSkip<SkipValidationAttribute>(filterContext))
//                {
//                    bool isLogin = false;
//                    isLogin = OperateContext.CurrentContext.IsLogin();
//                    if (!isLogin)
//                    {
//                        filterContext.Result = OperateContext.CurrentContext.Redirect("/Client/Account/Login/", filterContext.ActionDescriptor);
//                    }
//                }
//            }

//        }
//        #endregion


//        #region 是否跳过验证  -bool DoesSkip<T>(AuthorizationContext filterContext) where T : Attribute
//        /// <summary>
//        /// 是否跳过验证
//        /// </summary>
//        /// <typeparam name="T"></typeparam>
//        /// <param name="filterContext"></param>
//        /// <returns></returns>
//        bool DoesSkip<T>(AuthorizationContext filterContext) where T : Attribute
//        {
//            if (!filterContext.ActionDescriptor.IsDefined(typeof(T), false) &&
//                    !filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(T), false))
//            {
//                return false;
//            }
//            return true;
//        } 
//        #endregion
//    }
//}